home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.mactech.com 2010
/
ftp.mactech.com.tar
/
ftp.mactech.com
/
machack
/
Hacks97
/
WarriorsProgress.sit
/
Warrior’s Progress
/
source code
/
Source
/
Libraries
/
Sequence
/
Sequence.h
< prev
next >
Wrap
Text File
|
1997-06-28
|
1KB
|
68 lines
// Sequence.h
#ifndef Sequence_h
#define Sequence_h
#ifndef Assert_h
#include "Assert.h"
#endif
#ifndef Prepositions_h
#include "Prepositions.h"
#endif
/***
The head and node classes should conform to these protocols:
class Head: public Sequence<Head,Node>
{
public:
const Node *First() const;
const Node *Last() const;
};
class Node
{
public:
const Node *Next() const;
const Node *Previous() const;
bool Owned() const;
const Head& Owner() const;
};
***/
template < class Head, class Node > class SequenceLoop;
template < class Head, class Node >
class Sequence
{
friend class SequenceLoop<Head,Node>;
typedef SequenceLoop<Head,Node> Loop;
private:
Loop *firstLoop; // mutable
// not implemented:
Sequence( const Sequence& );
void operator=( const Sequence& );
void Register( Loop& ) const;
void Unregister( Loop& ) const;
protected:
void WillRemove( Node& );
void WillAdd( Node&, Before, const Node * );
void WillAdd( Node&, After, const Node * );
public:
Sequence()
: firstLoop( 0 )
{}
~Sequence()
{
Assert( firstLoop == 0 );
}
};
#endif